const path = require("path");
const HtmlWebpackPlugin = require("html-webpack-plugin");
module.exports = {
	entry:"./src/app.js",
	output: {
		path:path.join(__dirname,"/build"),
		filename: "js/bundle.js",
		// 指定加载资源的前缀
		publicPath: "/",
		clean: true
	},
	// 配置模块
	module: {
		// 规则
		rules:[
			{
				// cnpm install css-loader style-loader -D
				test:/\.css/,// 以.css结尾的文件
				// 需要使用的loader
				use:[
					"style-loader",// 将打包后的CSS放置到HTML的style标签中
					"css-loader",// 支持CSS语法
				]
			},{
				// cnpm install less-loader less -D
				test:/\.less/,
				use:[
					"style-loader",// 将打包后的CSS放置到HTML的style标签中
					"css-loader",//  支持CSS语法
					"less-loader"// 支持less模块化语法,将less转为CSS
				]
			}, {
				test: /\.js$/,                  //只检测js文件
				exclude: /node_modules/,        //排除node_modules文件夹
				enforce: "pre",                 //提前加载使用
				use: {
					loader: "eslint-loader"		//使用eslint-loader解析
				}
			},
			{
				test: /\.js$/,
				exclude: /node_modules/,
				use: {
					loader: "babel-loader",
					options: {
						presets: ['@babel/preset-env']
					}
				}
			},
			{
				test: /\.(png|jpg|gif)$/,
				use: {
					loader: 'url-loader',
					options: {
						// 如果图片与limit指定大小相同，会进行base64处理
						// 如果图片小于limit指定的数值，会进行base64处理
						// 如果图片大于limit指定的数值，不会进行base64处理
						limit: 3450,               	 // 8kb以下的图片会base64处理
						outputPath: 'images',           // 文件本地输出路径
						// publicPath: './images',  // 图片的url路径
						name: '[hash:8].[ext]',         // 修改文件名称和后缀
					}
				}
			},
			{
				test: /\.html$/,
				use: {
					loader: 'html-loader'
				}
			},
			{
				test: /\.(eot|svg|woff|woff2|ttf|mp3|mp4|avi)$/,  // 处理字体文件
				loader: 'file-loader',
				options: {
					outputPath: 'fonts',
					name: '[hash:8].[ext]'
				}
			}
		]
	},
	plugins: [
		// 安装 cnpm install html-webpack-plugin -D
		// new HtmlWebpackPlugin(),// 会帮你创建一个名字为index.html的页面，该页面会将打包后的JS进行引入。
		
		new HtmlWebpackPlugin({
			// 可以自定义页面（自定义的页面一般称为模板页面，可以通过该属性指定模板页面的地址）
			template: "./public/index.html",
			// 指定打包以后的文件名
			// filename: "a/home.html"
			filename: "index.html",
			// 引入打完包的JS文件代码放在BODY尾部,如果省略是放置在HEAD尾部
			inject: "body",
			// inject: false,// 不引入打完包的JS文件
			hash:true,// 增加查询字符串，去除缓存用的
			// 丑化（压缩）
			minify:{
				// 移除注释
				removeComments:true,
				// 去除空行和换行
				collapseWhitespace:true,
				// 去除属性的引号
				removeAttributeQuotes:true
			}
			
		})
	],
	mode:"development"
}